from sqlalchemy import Column, Integer, String, Float, Text, DateTime, JSON
from sqlalchemy.orm import relationship
from datetime import datetime
from database import Base

class NoFlyZone(Base):
    __tablename__ = "no_fly_zones"
    
    id = Column(Integer, primary_key=True, index=True)
    name = Column(String(100), unique=True, index=True, nullable=False)
    description = Column(String(255))
    
    # 适配DJI API的数据结构
    
    # 区域基本属性
    zone_type = Column(String(20), default="polygon", nullable=False)  # polygon或circle
    level = Column(String(20), default="default", nullable=False)  # 禁飞区级别
    color = Column(String(20), default="#FF0000", nullable=False)  # 显示颜色
    
    # 圆形禁飞区属性
    lat = Column(Float, nullable=True)  # 圆心纬度
    lng = Column(Float, nullable=True)  # 圆心经度
    radius = Column(Float, nullable=True)  # 单位：米
    
    # 多边形禁飞区属性
    polygon_points = Column(JSON, nullable=True)  # 多边形坐标点，格式：[[lng1, lat1], [lng2, lat2], ...]
    
    # 高度信息
    height = Column(String(50), nullable=True)  # 高度描述
    min_altitude = Column(Float, default=0.0)  # 最小高度（米）
    max_altitude = Column(Float, default=1000.0)  # 最大高度（米）
    
    # 子区域信息 - 适配DJI API的sub_areas结构
    sub_areas = Column(JSON, nullable=True)  # 子区域列表，格式与DJI API兼容
    
    # 生效时间范围
    start_time = Column(DateTime, nullable=True)
    end_time = Column(DateTime, nullable=True)
    
    created_at = Column(DateTime, default=datetime.now)
    updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
    
    def __repr__(self):
        return f"<NoFlyZone {self.name}>"